#!/bin/bash

# 检查输入参数是否正确
if [ $# -ne 2 ]; then
    echo "使用方法: $0 [区别行数阈值] [目录路径]"
    exit 1
fi

# 设置变量
threshold=$1
directory=$2
output_file="duplicate_files.txt"

# 删除已存在的输出文件
if [ -f "$output_file" ]; then
    rm "$output_file"
fi

# 遍历目录下的文本文件
files=("$directory"/*)
total_files=${#files[@]}

output_exists=false  # 标记是否存在符合条件的记录

for ((i=0; i<$total_files-1; i++)); do
    for ((j=i+1; j<$total_files; j++)); do
        file1="${files[i]}"
        file2="${files[j]}"

        # 对文件进行排序
        sorted_file1=$(sort "$file1")
        sorted_file2=$(sort "$file2")
        total_lines_file1=$(wc -l < "$file1")
        total_lines_file2=$(wc -l < "$file2")

        # 使用 comm 命令比较文件并计算有区别行数       
	unique_lines_file1_count=$(comm -23 <(echo "$sorted_file1") <(echo "$sorted_file2") | wc -l)
        unique_lines_file2_count=$(comm -13 <(echo "$sorted_file1") <(echo "$sorted_file2") | wc -l)
        differ_lines=$(( $unique_lines_file1_count + $unique_lines_file2_count))

        # 如果差异行数小于阈值，则记录到输出文件中
        if [ "$differ_lines" -lt "$threshold" ]; then
            echo "$file1 $file2 $differ_lines $total_lines_file1 $total_lines_file2" >> "$output_file"
            output_exists=true
        fi
    done
done

if [ "$output_exists" = false ]; then
    echo "没有符合条件的记录"
else
    echo "比较完成！请查看 $output_file 文件获取结果。"
fi
